package model

// RelationModelEdgeType 关系模型与边类型的关联表
type RelationModelEdgeType struct {
	BaseModel      // 继承公共字段
	ModelID    int `gorm:"column:MODEL_ID;not null;index:idx_model_edge;comment:关联关系模型ID（外键）" json:"model_id"`
	EdgeTypeID int `gorm:"column:EDGE_TYPE_ID;not null;index:idx_model_edge;comment:关联边类型ID（外键）" json:"edge_type_id"`

	// 联合唯一索引：同一模型不能重复关联同一边类型
	_ struct{} `gorm:"uniqueIndex:idx_unique_model_edge;fields:model_id,edge_type_id"`

	// 外键关联（序列化时忽略）
	RelationModel RelationModel `gorm:"foreignKey:ModelID;references:ID;constraint:OnDelete:CASCADE" json:"-"`
	EdgeType      EdgeType      `gorm:"foreignKey:EdgeTypeID;references:ID;constraint:OnDelete:CASCADE" json:"-"`
}

func (RelationModelEdgeType) TableName() string {
	return "RELATION_MODEL_EDGE_TYPES"
}
